Durante la carga de datos se realizo la verificacion de las clases de accidentes e inicialmente se identificaron 6 categorias: 1. Atropello 2. Caida_Ocupante 3. Choque 4. Incendio 5. Otro 6. Volcamiento
Sin embargo entre 2014 y 2017 solo se presentaron 17 casos de incendio y en el año 2018, 7 casos. Dada la poca cantidad de eventos se dejaron finalmente 5 categorias dado que incendio se incorporo a otro:
raw_data_2014 <- read.csv(file="./data/Accidentalidad_georreferenciada_2014.csv", encoding="UTF-8", header=TRUE, sep=",")
head(raw_data_2014)
## X.U.FEFF.OBJECTID X Y RADICADO FECHA
## 1 211279 831190.1 1179690 1423828 2014-01-01T00:00:00.000Z
## 2 211280 835013.6 1184224 1423839 2014-01-01T00:00:00.000Z
## 3 211281 837032.7 1184750 1423840 2014-01-01T00:00:00.000Z
## 4 211282 830649.5 1181383 1423849 2014-01-01T00:00:00.000Z
## 5 211283 833740.8 1188644 1423890 2014-01-01T00:00:00.000Z
## 6 211284 836425.4 1186933 1423892 2014-01-01T00:00:00.000Z
## HORA DIA PERIODO CLASE DIRECCION
## 1 02:20 AM 1 2014 Choque CR 80 CL 8
## 2 12:50 AM 1 2014 Atropello CR 53 CL 61
## 3 01:00 AM 1 2014 Atropello CR 39 CL 70
## 4 12:37 AM 1 2014 Atropello CL 32 CR 84
## 5 10:40 AM 1 2014 Caída de Ocupante CR 80 CL 101
## 6 04:00 AM 1 2014 Choque CR 48 CL 93
## DIRECCION_ENC CBML TIPO_GEOCOD GRAVEDAD
## 1 CR 080 008 000 00000 1611 Malla vial aproximada: CR 81-7 HERIDO
## 2 CR 053 061 000 00000 1003 Malla vial HERIDO
## 3 CR 039 070 000 00000 0308 Malla vial HERIDO
## 4 CL 032 084 000 00000 1617 Malla vial HERIDO
## 5 CR 080 101 000 00000 0603 Malla vial HERIDO
## 6 CR 048 093 000 00000 0401 Malla vial HERIDO
## BARRIO COMUNA DISENO DIA_NOMBRE MES
## 1 Loma de los Bernal Belén Tramo de via MIÉRCOLES 1
## 2 Jesús Nazareno La Candelaria Tramo de via MIÉRCOLES 1
## 3 Manrique Oriental Manrique Tramo de via MIÉRCOLES 1
## 4 Las Mercedes Belén Tramo de via MIÉRCOLES 1
## 5 Doce de Octubre No.2 Doce de Octubre Tramo de via MIÉRCOLES 1
## 6 Berlin Aranjuez Interseccion MIÉRCOLES 1
summary(raw_data_2014)
## X.U.FEFF.OBJECTID X Y RADICADO
## Min. :211279 Min. :823074 Min. :1172279 Min. :3.800e+01
## 1st Qu.:222939 1st Qu.:833036 1st Qu.:1181405 1st Qu.:1.436e+06
## Median :234284 Median :834331 Median :1183250 Median :1.447e+06
## Mean :234276 Mean :834150 Mean :1183303 Mean :4.810e+15
## 3rd Qu.:245700 3rd Qu.:835417 3rd Qu.:1185597 3rd Qu.:1.459e+06
## Max. :257033 Max. :845503 Max. :1189981 Max. :5.002e+19
##
## FECHA HORA DIA
## 2014-06-03T00:00:00.000Z: 168 04:00 PM: 776 Min. : 1.00
## 2014-02-13T00:00:00.000Z: 163 06:00 PM: 768 1st Qu.: 8.00
## 2014-08-06T00:00:00.000Z: 163 05:00 PM: 766 Median :16.00
## 2014-08-08T00:00:00.000Z: 158 02:00 PM: 705 Mean :15.73
## 2014-05-19T00:00:00.000Z: 157 03:00 PM: 695 3rd Qu.:23.00
## 2014-07-07T00:00:00.000Z: 157 01:00 PM: 679 Max. :31.00
## (Other) :40628 (Other) :37205
## PERIODO CLASE DIRECCION
## Min. :2014 Atropello : 4779 CR 64 C CL 78: 230
## 1st Qu.:2014 Caída de Ocupante: 4157 CR 1 CL 1 : 165
## Median :2014 Choque :27157 CR 64 C CL 67: 151
## Mean :2014 Incendio : 8 CR 57 CL 44 : 118
## 3rd Qu.:2014 Otro : 4521 CR 80 CL 50 : 115
## Max. :2014 Volcamiento : 972 CR 80 CL 65 : 115
## (Other) :40700
## DIRECCION_ENC CBML
## CR 064 C 078 000 00000: 248 1019 : 1148
## CR 001 001 000 00000 : 165 0517 : 979
## CR 064 C 067 000 00000: 151 1507 : 783
## CR 057 044 000 00000 : 118 1012 : 774
## CR 080 065 000 00000 : 116 1007 : 733
## CR 080 050 000 00000 : 115 1105 : 733
## (Other) :40681 (Other):36444
## TIPO_GEOCOD GRAVEDAD
## Malla vial :30320 HERIDO :23077
## Malla vial cruce invertido : 2251 MUERTO : 256
## EPM sin Interior : 987 SOLO DAÑOS:18261
## EPM con Interior : 435
## Malla vial aproximada: CR 1-2: 167
## ZONA RURAL : 97
## (Other) : 7337
## BARRIO COMUNA DISENO
## La Candelaria : 1151 La Candelaria : 8760 Tramo de via :33745
## Caribe : 980 Laureles Estadio: 4678 Interseccion : 5305
## Campo Amor : 786 Castilla : 4204 Lote o Predio: 1083
## Perpetuo Socorro : 775 El Poblado : 3154 Glorieta : 702
## Los Conquistadores: 735 Guayabal : 2946 : 256
## Guayaquil : 733 Robledo : 2828 Ciclo Ruta : 192
## (Other) :36434 (Other) :15024 (Other) : 311
## DIA_NOMBRE MES
## DOMINGO :4209 Min. : 1.000
## JUEVES :6143 1st Qu.: 4.000
## LUNES :6008 Median : 7.000
## MARTES :6301 Mean : 6.543
## MIÉRCOLES:6420 3rd Qu.: 9.000
## SÁBADO :5984 Max. :12.000
## VIERNES :6529
str(raw_data_2014)
## 'data.frame': 41594 obs. of 19 variables:
## $ X.U.FEFF.OBJECTID: int 211279 211280 211281 211282 211283 211284 211285 211286 211287 211288 ...
## $ X : num 831190 835014 837033 830649 833741 ...
## $ Y : num 1179690 1184224 1184750 1181383 1188644 ...
## $ RADICADO : num 1423828 1423839 1423840 1423849 1423890 ...
## $ FECHA : Factor w/ 365 levels "2014-01-01T00:00:00.000Z",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ HORA : Factor w/ 967 levels "01:00 AM","01:00 PM",..: 95 954 1 938 777 201 469 268 37 72 ...
## $ DIA : int 1 1 1 1 1 1 1 1 1 1 ...
## $ PERIODO : int 2014 2014 2014 2014 2014 2014 2014 2014 2014 2014 ...
## $ CLASE : Factor w/ 6 levels "Atropello","Caída de Ocupante",..: 3 1 1 1 2 3 3 3 3 2 ...
## $ DIRECCION : Factor w/ 12673 levels "CL 1 A CR 42",..: 11441 8871 6987 1424 11297 8063 3081 6269 11142 8131 ...
## $ DIRECCION_ENC : Factor w/ 12510 levels "000","CL 029 000 00000",..: 11024 8642 6786 915 11166 7817 2469 6072 10863 7898 ...
## $ CBML : Factor w/ 391 levels "","0101","01010480009",..: 333 192 39 340 105 48 170 176 241 280 ...
## $ TIPO_GEOCOD : Factor w/ 2252 levels "Catastro con Interior",..: 2064 5 5 5 5 5 5 5 5 5 ...
## $ GRAVEDAD : Factor w/ 3 levels "HERIDO","MUERTO",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ BARRIO : Factor w/ 313 levels "","6001","Aguas Frias",..: 181 129 201 175 81 40 31 155 294 302 ...
## $ COMUNA : Factor w/ 24 levels "","Aranjuez",..: 4 16 18 4 11 2 5 5 17 12 ...
## $ DISENO : Factor w/ 13 levels "","Ciclo Ruta",..: 11 11 11 11 11 4 11 4 11 11 ...
## $ DIA_NOMBRE : Factor w/ 7 levels "DOMINGO ","JUEVES ",..: 5 5 5 5 5 5 5 5 5 5 ...
## $ MES : int 1 1 1 1 1 1 1 1 1 1 ...
levels(raw_data_2014$CLASE)
## [1] "Atropello" "Caída de Ocupante" "Choque"
## [4] "Incendio" "Otro" "Volcamiento"
levels(raw_data_2014$CLASE) <- c("Atropello","Caida_Ocupante","Choque","Otro","Otro",
"Volcamiento")
levels(raw_data_2014$CLASE)
## [1] "Atropello" "Caida_Ocupante" "Choque" "Otro"
## [5] "Volcamiento"
raw_data_2015 <- read.csv(file="./data/Accidentalidad_georreferenciada_2015.csv", encoding="UTF-8", header=TRUE, sep=",")
head(raw_data_2015)
## X.U.FEFF.OBJECTID X Y RADICADO FECHA
## 1 1001 835766.9 1183119 1471803 2015-01-13T00:00:00.000Z
## 2 1002 839496.9 1177763 1471804 2015-01-13T00:00:00.000Z
## 3 1003 832970.8 1178867 1471805 2015-01-13T00:00:00.000Z
## 4 1004 831318.1 1187204 1471806 2015-01-13T00:00:00.000Z
## 5 1005 833710.7 1185631 1471807 2015-01-13T00:00:00.000Z
## 6 1006 839496.9 1177763 1471808 2015-01-12T00:00:00.000Z
## HORA DIA PERIODO CLASE DIRECCION
## 1 02:20 PM 13 2015 Volcamiento CR 43 CL 54
## 2 09:00 AM 13 2015 Otro CR 1 CL 1
## 3 10:00 AM 13 2015 Volcamiento CR 58 D CL 3
## 4 06:30 PM 13 2015 Otro CL 68 B CR 96 E
## 5 05:40 AM 13 2015 Otro CR 68 CL 70
## 6 09:30 AM 12 2015 Volcamiento CR 1 CL 1
## DIRECCION_ENC CBML TIPO_GEOCOD
## 1 CR 043 054 000 00000 1016 Malla vial
## 2 CR 001 001 000 00000 9086 Malla vial aproximada: CR 1-2
## 3 CR 058 D 003 000 00000 1507 Malla vial aproximada: CR 58-4
## 4 CL 068 B 096 E 000 00000 0724 Malla vial aproximada: CL 68-95
## 5 CR 068 070 000 00000 0519 Malla vial aproximada: CR 69-71
## 6 CR 001 001 000 00000 9086 Malla vial aproximada: CR 1-2
## GRAVEDAD BARRIO COMUNA DISENO
## 1 HERIDO Boston La Candelaria Tramo de via
## 2 HERIDO Suburbano El Plan Corregimiento de Santa Elena Tramo de via
## 3 HERIDO Campo Amor Guayabal Tramo de via
## 4 HERIDO Monteclaro Robledo Tramo de via
## 5 HERIDO El Progreso Castilla Tramo de via
## 6 HERIDO Suburbano El Plan Corregimiento de Santa Elena Tramo de via
## DIA_NOMBRE MES
## 1 MARTES 1
## 2 MARTES 1
## 3 MARTES 1
## 4 MARTES 1
## 5 MARTES 1
## 6 LUNES 1
summary(raw_data_2015)
## X.U.FEFF.OBJECTID X Y RADICADO
## Min. : 1 Min. :821476 Min. :1172359 Min. :3.270e+02
## 1st Qu.:11558 1st Qu.:833029 1st Qu.:1181443 1st Qu.:1.482e+06
## Median :23149 Median :834305 Median :1183204 Median :1.494e+06
## Mean :23110 Mean :834102 Mean :1183264 Mean :2.175e+16
## 3rd Qu.:34664 3rd Qu.:835387 3rd Qu.:1185476 3rd Qu.:1.506e+06
## Max. :46172 Max. :842417 Max. :1193451 Max. :5.002e+20
##
## FECHA HORA DIA
## 2015-08-18T00:00:00.000Z: 183 07:00 AM: 951 Min. : 1.00
## 2015-08-28T00:00:00.000Z: 183 08:00 AM: 921 1st Qu.: 8.00
## 2015-09-11T00:00:00.000Z: 162 10:00 AM: 801 Median :16.00
## 2015-12-07T00:00:00.000Z: 161 07:30 AM: 767 Mean :15.74
## 2015-09-17T00:00:00.000Z: 160 06:30 AM: 756 3rd Qu.:23.00
## 2015-09-18T00:00:00.000Z: 160 06:00 AM: 741 Max. :31.00
## (Other) :41071 (Other) :37143
## PERIODO CLASE DIRECCION
## Min. :2015 Choque :28249 CR 64 C CL 78: 211
## 1st Qu.:2015 Atropello : 4485 CR 63 CL 44 : 177
## Median :2015 Otro : 4218 CR 57 CL 44 : 172
## Mean :2015 Caida Ocupante : 3673 CR 64 C CL 67: 132
## 3rd Qu.:2015 Volcamiento : 1435 CR 80 CL 50 : 122
## Max. :2015 Caída de Ocupante: 18 CR 52 CL 10 : 121
## (Other) : 2 (Other) :41145
## DIRECCION_ENC CBML
## CR 064 C 078 000 00000: 227 1019 : 1067
## CR 063 044 000 00000 : 177 0517 : 899
## CR 057 044 000 00000 : 173 1007 : 882
## CR 064 C 067 000 00000: 132 1006 : 867
## CR 080 050 000 00000 : 122 1012 : 804
## CR 052 010 000 00000 : 121 1105 : 783
## (Other) :41128 (Other):36778
## TIPO_GEOCOD GRAVEDAD
## Malla vial :31011 HERIDO :23273
## Malla vial cruce invertido : 2341 MUERTO : 250
## EPM sin Interior : 886 SOLO DAÑOS:18557
## EPM con Interior : 459
## Malla vial aproximada: CR 1-2 : 86
## Malla vial aproximada: CR 65-80: 85
## (Other) : 7212
## BARRIO COMUNA DISENO
## La Candelaria : 1069 La Candelaria : 9355 Tramo de via :33729
## Caribe : 899 Laureles Estadio: 4908 Interseccion : 5794
## Guayaquil : 883 Castilla : 4000 Lote o Predio: 1219
## San Benito : 868 El Poblado : 3194 Glorieta : 751
## Perpetuo Socorro : 804 Robledo : 2884 : 250
## Los Conquistadores: 785 Guayabal : 2814 Paso Elevado : 101
## (Other) :36772 (Other) :14925 (Other) : 236
## DIA_NOMBRE MES
## DOMINGO :4048 Min. : 1.000
## JUEVES :6516 1st Qu.: 4.000
## LUNES :5973 Median : 7.000
## MARTES :6696 Mean : 6.624
## MIÉRCOLES:6341 3rd Qu.:10.000
## SÁBADO :6003 Max. :12.000
## VIERNES :6503
str(raw_data_2015)
## 'data.frame': 42080 obs. of 19 variables:
## $ X.U.FEFF.OBJECTID: int 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 ...
## $ X : num 835767 839497 832971 831318 833711 ...
## $ Y : num 1183119 1177763 1178867 1187204 1185631 ...
## $ RADICADO : num 1471803 1471804 1471805 1471806 1471807 ...
## $ FECHA : Factor w/ 365 levels "2015-01-01T00:00:00.000Z",..: 13 13 13 13 13 12 13 13 13 13 ...
## $ HORA : Factor w/ 898 levels "01:00 AM","01:00 PM",..: 103 610 691 413 342 651 560 493 342 868 ...
## $ DIA : int 13 13 13 13 13 12 13 13 13 13 ...
## $ PERIODO : int 2015 2015 2015 2015 2015 2015 2015 2015 2015 2015 ...
## $ CLASE : Factor w/ 8 levels "","Atropello",..: 8 7 8 7 7 8 7 7 7 4 ...
## $ DIRECCION : Factor w/ 12729 levels "CL 1 A CR 35",..: 7461 5630 9229 4297 10332 5630 9640 10693 9766 9166 ...
## $ DIRECCION_ENC : Factor w/ 12523 levels "000","CL 010 000 00000",..: 7057 5546 8947 3700 9999 5546 9515 10334 9266 8875 ...
## $ CBML : Factor w/ 394 levels "","0","0101",..: 217 389 317 150 106 389 85 133 232 200 ...
## $ TIPO_GEOCOD : Factor w/ 2229 levels "Catastro con Interior",..: 5 1014 1645 797 1844 1014 1728 1892 5 5 ...
## $ GRAVEDAD : Factor w/ 3 levels "HERIDO","MUERTO",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ BARRIO : Factor w/ 319 levels "","0","6001",..: 51 283 62 210 99 283 170 76 194 248 ...
## $ COMUNA : Factor w/ 26 levels "","0","Aranjuez",..: 18 12 15 22 7 12 7 22 19 18 ...
## $ DISENO : Factor w/ 13 levels "","Ciclo Ruta",..: 11 11 11 11 11 11 11 11 11 11 ...
## $ DIA_NOMBRE : Factor w/ 7 levels "DOMINGO ","JUEVES ",..: 4 4 4 4 4 3 4 4 4 4 ...
## $ MES : int 1 1 1 1 1 1 1 1 1 1 ...
levels(raw_data_2015$CLASE)
## [1] "" "Atropello" "Caída de Ocupante"
## [4] "Caida Ocupante" "Choque" "Incendio"
## [7] "Otro" "Volcamiento"
levels(raw_data_2015$CLASE) <- c("Otro","Atropello","Caida_Ocupante","Caida_Ocupante","Choque",
"Otro","Otro","Volcamiento")
levels(raw_data_2015$CLASE)
## [1] "Otro" "Atropello" "Caida_Ocupante" "Choque"
## [5] "Volcamiento"
raw_data_2016 <- read.csv(file="./data/Accidentalidad_georreferenciada_2016.csv", encoding="UTF-8", header=TRUE, sep=",")
head(raw_data_2016)
## X.U.FEFF.OBJECTID X Y RADICADO FECHA
## 1 259034 827277.9 1175177 1519832 2016-01-20T00:00:00.000Z
## 2 259035 835105.9 1183570 1519765 2016-01-20T00:00:00.000Z
## 3 259036 834811.1 1182025 1519752 2016-01-20T00:00:00.000Z
## 4 259037 836020.8 1178803 1519682 2016-01-20T00:00:00.000Z
## 5 259038 832264.6 1185704 1519685 2016-01-20T00:00:00.000Z
## 6 259040 831843.3 1183130 1519883 2016-01-20T00:00:00.000Z
## HORA DIA PERIODO CLASE DIRECCION
## 1 11:00 AM 20 2016 Choque CR 55 CL 48 A Sur
## 2 01:25 PM 20 2016 Choque CL 54 CR 51
## 3 02:35 PM 20 2016 Choque CR 46 CL 40
## 4 08:40 AM 20 2016 Choque CR 30 CL 10 C
## 5 10:30 AM 20 2016 Volcamiento CR 80 CL 64
## 6 10:45 AM 20 2016 Choque CR 78 CL 44
## DIRECCION_ENC CBML TIPO_GEOCOD
## 1 CR 055 S 048 A 000 00000 8000 Malla vial
## 2 CL 054 051 000 00000 1005 Malla vial
## 3 CR 046 040 000 00000 1013 Malla vial
## 4 CR 030 010 C 000 00000 1407 Malla vial
## 5 CR 080 064 000 00000 0705 Malla vial aproximada: CR 80-65
## 6 CR 078 044 000 00000 1112 Malla vial
## GRAVEDAD BARRIO
## 1 SOLO DAÑOS Cabecera San Antonio de Prado
## 2 SOLO DAÑOS Estación Villa
## 3 SOLO DAÑOS Barrio Colón
## 4 SOLO DAÑOS Las Lomas No.2
## 5 SOLO DAÑOS Facultad de Minas U. Nacional
## 6 SOLO DAÑOS El Velódromo
## COMUNA DISENO DIA_NOMBRE MES
## 1 Corregimiento de San Antonio de Prado Lote o Predio MIÉRCOLES 1
## 2 La Candelaria Tramo de via MIÉRCOLES 1
## 3 La Candelaria Tramo de via MIÉRCOLES 1
## 4 El Poblado Tramo de via MIÉRCOLES 1
## 5 Robledo Tramo de via MIÉRCOLES 1
## 6 Laureles Estadio Interseccion MIÉRCOLES 1
str(raw_data_2016)
## 'data.frame': 42841 obs. of 19 variables:
## $ X.U.FEFF.OBJECTID: int 259034 259035 259036 259037 259038 259040 259041 259042 259044 259045 ...
## $ X : num 827278 835106 834811 836021 832265 ...
## $ Y : num 1175177 1183570 1182025 1178803 1185704 ...
## $ RADICADO : num 1519832 1519765 1519752 1519682 1519685 ...
## $ FECHA : Factor w/ 366 levels "2016-01-01T00:00:00.000Z",..: 20 20 20 20 20 20 20 20 20 20 ...
## $ HORA : Factor w/ 1092 levels "01:00 AM","01:00 PM",..: 918 36 128 696 878 896 778 81 42 452 ...
## $ DIA : int 20 20 20 20 20 20 20 20 20 20 ...
## $ PERIODO : int 2016 2016 2016 2016 2016 2016 2016 2016 2016 2016 ...
## $ CLASE : Factor w/ 8 levels "","Atropello",..: 5 5 5 5 8 5 5 5 5 5 ...
## $ DIRECCION : Factor w/ 12962 levels " CR 59 CL 64 -32",..: 9087 3363 7866 6408 11595 11298 1313 78 1793 5222 ...
## $ DIRECCION_ENC : Factor w/ 12631 levels "000","CL 053 000 00000",..: 8828 2700 7540 6119 11176 10918 759 284 1275 201 ...
## $ CBML : Factor w/ 396 levels "","0","0101",..: 382 197 210 298 122 246 332 298 207 310 ...
## $ TIPO_GEOCOD : Factor w/ 2254 levels "Catastro con Interior",..: 5 5 5 5 2013 5 5 2252 5 5 ...
## $ GRAVEDAD : Factor w/ 3 levels "HERIDO","MUERTO",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ BARRIO : Factor w/ 313 levels "","0","6001",..: 56 111 33 175 112 109 242 175 60 97 ...
## $ COMUNA : Factor w/ 25 levels "","0","Aranjuez",..: 9 18 18 14 22 19 5 14 18 14 ...
## $ DISENO : Factor w/ 13 levels "","Ciclo Ruta",..: 5 11 11 11 11 4 11 4 4 11 ...
## $ DIA_NOMBRE : Factor w/ 7 levels "DOMINGO ","JUEVES ",..: 5 5 5 5 5 5 5 5 5 5 ...
## $ MES : int 1 1 1 1 1 1 1 1 1 1 ...
levels(raw_data_2016$CLASE)
## [1] "" "Atropello" "Caída de Ocupante"
## [4] "Caida Ocupante" "Choque" "Incendio"
## [7] "Otro" "Volcamiento"
levels(raw_data_2016$CLASE) <- c("Otro","Atropello","Caida_Ocupante","Caida_Ocupante","Choque",
"Otro","Otro","Volcamiento")
levels(raw_data_2016$CLASE)
## [1] "Otro" "Atropello" "Caida_Ocupante" "Choque"
## [5] "Volcamiento"
raw_data_2017 <- read.csv(file="./data/Accidentalidad_georreferenciada_2017.csv", encoding="UTF-8", header=TRUE, sep=",")
head(raw_data_2017)
## X.U.FEFF.OBJECTID X Y RADICADO FECHA
## 1 504352 834796.6 1181345 1590356 2017-07-20T00:00:00.000Z
## 2 504353 831461.0 1181883 1586285 2017-06-15T00:00:00.000Z
## 3 504354 833229.3 1186996 1588185 2017-07-02T00:00:00.000Z
## 4 504355 833366.8 1181955 1576853 2017-03-29T00:00:00.000Z
## 5 504356 832577.6 1184274 1591283 2017-07-26T00:00:00.000Z
## 6 504358 834246.7 1180257 1578106 2017-04-12T00:00:00.000Z
## HORA DIA PERIODO CLASE DIRECCION
## 1 08:00 AM 20 2017 Caida Ocupante CR 43 A CL 33
## 2 04:50 PM 15 2017 Choque CR 80 CL 33
## 3 04:20 PM 2 2017 Choque CR 80 CL 80 A
## 4 06:29 PM 29 2017 Choque CL 33 Norte CR 65
## 5 08:10 PM 26 2017 Atropello CL 50 CR 74
## 6 11:10 AM 12 2017 Choque CR 48 CL 20
## DIRECCION_ENC CBML TIPO_GEOCOD GRAVEDAD
## 1 CR 043 A 033 000 00000 1020 Malla vial HERIDO
## 2 CR 080 033 000 00000 1109 Malla vial SOLO DAÑOS
## 3 CR 080 080 A 000 00000 0710 Malla vial HERIDO
## 4 CL 033 065 000 00000 1105 Malla vial SOLO DAÑOS
## 5 CL 050 074 000 00000 1115 Malla vial HERIDO
## 6 CR 048 020 000 00000 1403 Malla vial SOLO DAÑOS
## BARRIO COMUNA DISENO DIA_NOMBRE MES
## 1 San Diego La Candelaria Interseccion JUEVES 7
## 2 Las Acacias Laureles Estadio Glorieta JUEVES 6
## 3 López de Mesa Robledo Tramo de via DOMINGO 7
## 4 Los Conquistadores Laureles Estadio Tramo de via MIÉRCOLES 3
## 5 Cuarta Brigada Laureles Estadio Tramo de via MIÉRCOLES 7
## 6 Villa Carlota El Poblado Tramo de via MIÉRCOLES 4
str(raw_data_2017)
## 'data.frame': 42563 obs. of 19 variables:
## $ X.U.FEFF.OBJECTID: int 504352 504353 504354 504355 504356 504358 504359 504360 504361 504362 ...
## $ X : num 834797 831461 833229 833367 832578 ...
## $ Y : num 1181345 1181883 1186996 1181955 1184274 ...
## $ RADICADO : num 1590356 1586285 1588185 1576853 1591283 ...
## $ FECHA : Factor w/ 370 levels "2017-01-01T00:00:00.000Z",..: 201 166 183 88 207 102 154 110 180 174 ...
## $ HORA : Factor w/ 1106 levels "01:00 AM","01:00 PM",..: 638 321 278 473 657 950 291 362 203 555 ...
## $ DIA : int 20 15 2 29 26 12 3 20 29 23 ...
## $ PERIODO : int 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 ...
## $ CLASE : Factor w/ 9 levels "Atropello","Caida Ocupante",..: 2 4 4 4 1 4 2 4 4 4 ...
## $ DIRECCION : Factor w/ 12879 levels "CL 1 A CR 70",..: 7319 11494 11596 1612 3122 7985 5410 3656 2392 652 ...
## $ DIRECCION_ENC : Factor w/ 12595 levels "000","CL 018 000 00000",..: 7116 11091 11186 1035 2406 7639 4443 2902 1738 5432 ...
## $ CBML : Factor w/ 403 levels "","0101","0102",..: 217 230 131 224 239 283 112 212 249 303 ...
## $ TIPO_GEOCOD : Factor w/ 2569 levels "Catastro con Interior",..: 5 5 5 5 5 5 5 5 5 4 ...
## $ GRAVEDAD : Factor w/ 3 levels "HERIDO","MUERTO",..: 1 3 1 3 1 3 1 1 3 3 ...
## $ BARRIO : Factor w/ 325 levels "","6001","9086",..: 252 169 185 195 78 314 134 322 89 135 ...
## $ COMUNA : Factor w/ 83 levels "","Alejandro Echavarría",..: 46 55 68 55 55 33 30 46 45 33 ...
## $ DISENO : Factor w/ 13 levels "","Ciclo Ruta",..: 4 3 11 11 11 11 5 11 4 4 ...
## $ DIA_NOMBRE : Factor w/ 7 levels "DOMINGO ","JUEVES ",..: 2 2 1 5 5 5 6 2 2 7 ...
## $ MES : int 7 6 7 3 7 4 6 4 6 6 ...
levels(raw_data_2017$CLASE)
## [1] "Atropello" "Caida Ocupante" "Caída Ocupante"
## [4] "Choque" "Choque " "Choque y Atropello"
## [7] "Incendio" "Otro" "Volcamiento"
levels(raw_data_2017$CLASE) <- c("Atropello","Caida_Ocupante","Caida_Ocupante","Choque","Choque",
"Choque","Otro","Otro","Volcamiento")
levels(raw_data_2017$CLASE)
## [1] "Atropello" "Caida_Ocupante" "Choque" "Otro"
## [5] "Volcamiento"
summary(raw_data_2014$CLASE)
## Atropello Caida_Ocupante Choque Otro Volcamiento
## 4779 4157 27157 4529 972
summary(raw_data_2015$CLASE)
## Otro Atropello Caida_Ocupante Choque Volcamiento
## 4220 4485 3691 28249 1435
summary(raw_data_2016$CLASE)
## Otro Atropello Caida_Ocupante Choque Volcamiento
## 4879 4167 3680 28631 1484
summary(raw_data_2017$CLASE)
## Atropello Caida_Ocupante Choque Otro Volcamiento
## 3640 3433 29196 4722 1572
raw_data_2018 <- read.csv(file="./data/Accidentalidad_georreferenciada_2018.csv", encoding="UTF-8", header=TRUE, sep=",")
str(raw_data_2018)
## 'data.frame': 40348 obs. of 19 variables:
## $ X.U.FEFF.OBJECTID: int 550556 550557 550558 550559 550560 550562 550563 550564 550565 550566 ...
## $ X : num 833196 833455 835882 831732 835720 ...
## $ Y : num 1184350 1187884 1183347 1180062 1181651 ...
## $ RADICADO : int 1612819 1612866 1612809 1612812 1612817 1612856 1612823 1612825 1612850 1612815 ...
## $ FECHA : Factor w/ 365 levels "2018-01-01T00:00:00.000Z",..: 14 14 14 14 14 14 14 14 14 14 ...
## $ HORA : Factor w/ 1485 levels "01:00 AM","01:00 PM",..: 57 57 168 168 182 222 281 334 348 372 ...
## $ DIA : int 14 14 14 14 14 14 14 14 14 14 ...
## $ PERIODO : int 2018 2018 2018 2018 2018 2018 2018 2018 2018 2018 ...
## $ CLASE : Factor w/ 7 levels "Atropello","Caida Ocupante",..: 4 4 2 6 4 1 4 4 4 2 ...
## $ DIRECCION : Factor w/ 12504 levels "CL 1 A CR 25",..: 10404 11159 7325 10853 6620 7455 5569 1588 2214 10721 ...
## $ DIRECCION_ENC : Factor w/ 12364 levels "000","CL 001 017 000 00000",..: 10180 10919 6991 10609 6409 7256 5538 1097 1679 10470 ...
## $ CBML : Factor w/ 375 levels "","0101","0102",..: 207 103 202 307 172 40 214 194 231 104 ...
## $ TIPO_GEOCOD : Factor w/ 2405 levels "Catastro con Interior",..: 5 5 5 5 5 3 5 5 5 5 ...
## $ GRAVEDAD : Factor w/ 3 levels "HERIDO","MUERTO",..: 1 3 1 1 3 1 3 3 3 1 ...
## $ BARRIO : Factor w/ 321 levels "","0","6001",..: 69 262 192 251 108 205 48 237 200 137 ...
## $ COMUNA : Factor w/ 24 levels "","Aranjuez",..: 18 12 17 4 5 19 18 17 16 12 ...
## $ DISENO : Factor w/ 13 levels "","Ciclo Ruta",..: 4 11 11 4 11 11 4 5 11 4 ...
## $ DIA_NOMBRE : Factor w/ 7 levels "DOMINGO ","JUEVES ",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ MES : int 1 1 1 1 1 1 1 1 1 1 ...
levels(raw_data_2018$CLASE)
## [1] "Atropello" "Caida Ocupante" "Caída Ocupante" "Choque"
## [5] "Incendio" "Otro" "Volcamiento"
levels(raw_data_2018$CLASE) <- c("Atropello","Caida_Ocupante","Caida_Ocupante","Choque","Otro","Otro", "Volcamiento")
levels(raw_data_2018$CLASE)
## [1] "Atropello" "Caida_Ocupante" "Choque" "Otro"
## [5] "Volcamiento"
summary(raw_data_2018$CLASE)
## Atropello Caida_Ocupante Choque Otro Volcamiento
## 3604 3617 28207 3746 1174
Total_Dataset <- rbind(raw_data_2014,raw_data_2015,raw_data_2016, raw_data_2017, raw_data_2018)
str(Total_Dataset)
## 'data.frame': 209426 obs. of 19 variables:
## $ X.U.FEFF.OBJECTID: int 211279 211280 211281 211282 211283 211284 211285 211286 211287 211288 ...
## $ X : num 831190 835014 837033 830649 833741 ...
## $ Y : num 1179690 1184224 1184750 1181383 1188644 ...
## $ RADICADO : num 1423828 1423839 1423840 1423849 1423890 ...
## $ FECHA : Factor w/ 1831 levels "2014-01-01T00:00:00.000Z",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ HORA : Factor w/ 2239 levels "01:00 AM","01:00 PM",..: 95 954 1 938 777 201 469 268 37 72 ...
## $ DIA : int 1 1 1 1 1 1 1 1 1 1 ...
## $ PERIODO : int 2014 2014 2014 2014 2014 2014 2014 2014 2014 2014 ...
## $ CLASE : Factor w/ 5 levels "Atropello","Caida_Ocupante",..: 3 1 1 1 2 3 3 3 3 2 ...
## $ DIRECCION : Factor w/ 29182 levels "CL 1 A CR 42",..: 11441 8871 6987 1424 11297 8063 3081 6269 11142 8131 ...
## $ DIRECCION_ENC : Factor w/ 27999 levels "000","CL 029 000 00000",..: 11024 8642 6786 915 11166 7817 2469 6072 10863 7898 ...
## $ CBML : Factor w/ 699 levels "","0101","01010480009",..: 333 192 39 340 105 48 170 176 241 280 ...
## $ TIPO_GEOCOD : Factor w/ 5624 levels "Catastro con Interior",..: 2064 5 5 5 5 5 5 5 5 5 ...
## $ GRAVEDAD : Factor w/ 3 levels "HERIDO","MUERTO",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ BARRIO : Factor w/ 340 levels "","6001","Aguas Frias",..: 181 129 201 175 81 40 31 155 294 302 ...
## $ COMUNA : Factor w/ 85 levels "","Aranjuez",..: 4 16 18 4 11 2 5 5 17 12 ...
## $ DISENO : Factor w/ 13 levels "","Ciclo Ruta",..: 11 11 11 11 11 4 11 4 11 11 ...
## $ DIA_NOMBRE : Factor w/ 7 levels "DOMINGO ","JUEVES ",..: 5 5 5 5 5 5 5 5 5 5 ...
## $ MES : int 1 1 1 1 1 1 1 1 1 1 ...
levels(Total_Dataset$CLASE)
## [1] "Atropello" "Caida_Ocupante" "Choque" "Otro"
## [5] "Volcamiento"
summary(Total_Dataset$CLASE)
## Atropello Caida_Ocupante Choque Otro Volcamiento
## 20675 18578 141440 22096 6637
Para ahorra memoria se eliminan los dataframes por año
rm(raw_data_2014,raw_data_2015,raw_data_2016, raw_data_2017, raw_data_2018)
La Fecha esta cargada como factor, se realiza una transformacion a formato de fecha (date)
Total_Dataset$FECHA <- as.Date(Total_Dataset$FECHA, format="%Y-%m-%d")
tail(Total_Dataset)
## X.U.FEFF.OBJECTID X Y RADICADO FECHA
## 209421 686550 836789.8 1186516 1652251 2018-12-05
## 209422 686551 834601.3 1186742 1652236 2018-12-05
## 209423 686552 832577.7 1183055 1652193 2018-12-05
## 209424 686553 833974.2 1183603 1652324 2018-12-05
## 209425 686554 834299.9 1180877 1652349 2018-12-05
## 209426 686555 836838.6 1186467 1652347 2018-12-05
## HORA DIA PERIODO CLASE DIRECCION
## 209421 03:20:00 p. m. 5 2018 Choque CR 44 A CL 88
## 209422 03:20:00 p. m. 5 2018 Choque CR 65 CL 91 C
## 209423 03:20:00 p. m. 5 2018 Choque CL 44 CR 71
## 209424 03:30:00 p. m. 5 2018 Choque CR 63 CL 50
## 209425 03:40:00 p. m. 5 2018 Choque CL 27 CR 46
## 209426 04:10:00 p. m. 5 2018 Otro CR 44 CL 88
## DIRECCION_ENC CBML
## 209421 CR 044 A 088 000 00000 03020770009
## 209422 CR 065 091 C 000 00000 0513
## 209423 CL 044 071 000 00000 1117
## 209424 CR 063 050 000 00000 1101
## 209425 CL 027 046 000 00000 1401
## 209426 CR 044 088 000 00000 0302
## TIPO_GEOCOD GRAVEDAD BARRIO
## 209421 Nomenclatura con Interior HERIDO Las Granjas
## 209422 Malla vial aproximada: CR 65-91A HERIDO Francisco Antonio Zea
## 209423 Malla vial SOLO DAÑOS Florida Nueva
## 209424 Malla vial HERIDO Carlos E. Restrepo
## 209425 Malla vial SOLO DAÑOS Barrio Colombia
## 209426 Malla vial HERIDO Las Granjas
## COMUNA DISENO DIA_NOMBRE MES
## 209421 Manrique Interseccion MIÉRCOLES 12
## 209422 Castilla Interseccion MIÉRCOLES 12
## 209423 Laureles Estadio Tramo de via MIÉRCOLES 12
## 209424 Laureles Estadio Tramo de via MIÉRCOLES 12
## 209425 El Poblado Lote o Predio MIÉRCOLES 12
## 209426 Manrique Interseccion MIÉRCOLES 12
Se convierten las variables dia y mes a factor
Total_Dataset$DIA <- as.factor(Total_Dataset$DIA)
Total_Dataset$MES <- as.factor(Total_Dataset$MES)
tail(Total_Dataset)
## X.U.FEFF.OBJECTID X Y RADICADO FECHA
## 209421 686550 836789.8 1186516 1652251 2018-12-05
## 209422 686551 834601.3 1186742 1652236 2018-12-05
## 209423 686552 832577.7 1183055 1652193 2018-12-05
## 209424 686553 833974.2 1183603 1652324 2018-12-05
## 209425 686554 834299.9 1180877 1652349 2018-12-05
## 209426 686555 836838.6 1186467 1652347 2018-12-05
## HORA DIA PERIODO CLASE DIRECCION
## 209421 03:20:00 p. m. 5 2018 Choque CR 44 A CL 88
## 209422 03:20:00 p. m. 5 2018 Choque CR 65 CL 91 C
## 209423 03:20:00 p. m. 5 2018 Choque CL 44 CR 71
## 209424 03:30:00 p. m. 5 2018 Choque CR 63 CL 50
## 209425 03:40:00 p. m. 5 2018 Choque CL 27 CR 46
## 209426 04:10:00 p. m. 5 2018 Otro CR 44 CL 88
## DIRECCION_ENC CBML
## 209421 CR 044 A 088 000 00000 03020770009
## 209422 CR 065 091 C 000 00000 0513
## 209423 CL 044 071 000 00000 1117
## 209424 CR 063 050 000 00000 1101
## 209425 CL 027 046 000 00000 1401
## 209426 CR 044 088 000 00000 0302
## TIPO_GEOCOD GRAVEDAD BARRIO
## 209421 Nomenclatura con Interior HERIDO Las Granjas
## 209422 Malla vial aproximada: CR 65-91A HERIDO Francisco Antonio Zea
## 209423 Malla vial SOLO DAÑOS Florida Nueva
## 209424 Malla vial HERIDO Carlos E. Restrepo
## 209425 Malla vial SOLO DAÑOS Barrio Colombia
## 209426 Malla vial HERIDO Las Granjas
## COMUNA DISENO DIA_NOMBRE MES
## 209421 Manrique Interseccion MIÉRCOLES 12
## 209422 Castilla Interseccion MIÉRCOLES 12
## 209423 Laureles Estadio Tramo de via MIÉRCOLES 12
## 209424 Laureles Estadio Tramo de via MIÉRCOLES 12
## 209425 El Poblado Lote o Predio MIÉRCOLES 12
## 209426 Manrique Interseccion MIÉRCOLES 12
Se genera frecuencia que es la tabla a analizar
library(sqldf)
## Loading required package: gsubfn
## Loading required package: proto
## Loading required package: RSQLite
Total_Dataset_Freq <- sqldf("SELECT FECHA, CLASE, count(CLASE) AS FREQ, DIA_NOMBRE, MES, DIA
FROM Total_Dataset
GROUP BY FECHA, CLASE")
se agrega la variable año al datafrate
Total_Dataset_Freq$ANO <- as.factor(format(Total_Dataset_Freq$FECHA,'%Y'))
Se agrega la variable semana al dataframe
Total_Dataset_Freq$SEMANA <-as.factor(format(Total_Dataset_Freq$FECHA,'%V'))
tail(Total_Dataset_Freq)
## FECHA CLASE FREQ DIA_NOMBRE MES DIA ANO SEMANA
## 9023 2018-12-30 Volcamiento 2 DOMINGO 12 30 2018 52
## 9024 2018-12-31 Atropello 8 LUNES 12 31 2018 01
## 9025 2018-12-31 Caida_Ocupante 6 LUNES 12 31 2018 01
## 9026 2018-12-31 Choque 50 LUNES 12 31 2018 01
## 9027 2018-12-31 Otro 10 LUNES 12 31 2018 01
## 9028 2018-12-31 Volcamiento 2 LUNES 12 31 2018 01
Se depura la variable DIA_NOMBRE para eliminar los espacios, quitar tildes, dar un orden al factor
levels(Total_Dataset_Freq$DIA_NOMBRE)
## [1] "DOMINGO " "JUEVES " "LUNES " "MARTES " "MIÉRCOLES" "SÁBADO "
## [7] "VIERNES "
levels(Total_Dataset_Freq$DIA_NOMBRE) <- c("DOMINGO","JUEVES","LUNES","MARTES","MIERCOLES","SABADO","VIERNES")
levels(Total_Dataset_Freq$DIA_NOMBRE)
## [1] "DOMINGO" "JUEVES" "LUNES" "MARTES" "MIERCOLES" "SABADO"
## [7] "VIERNES"
Total_Dataset_Freq$DIA_NOMBRE <- ordered(Total_Dataset_Freq$DIA_NOMBRE,c("LUNES", "MARTES", "MIERCOLES", "JUEVES", "VIERNES", "SABADO", "DOMINGO"))
levels(Total_Dataset_Freq$DIA_NOMBRE)
## [1] "LUNES" "MARTES" "MIERCOLES" "JUEVES" "VIERNES" "SABADO"
## [7] "DOMINGO"
Ahora se agregan otras variables a que caracterizan fechas especiales. Se carga un CSV y se realiza un left join a la tabla Total_Dataset_Freq
Dias_Especiales <- read.csv(file="./data/Caracterizacion.csv", encoding="UTF-8", header=TRUE, sep=";",stringsAsFactors=FALSE)
head(Dias_Especiales)
## Fecha Lunes martes miercoles jueves viernes sabado domingo Enero
## 1 01-01-2014 0 0 1 0 0 0 0 1
## 2 02-01-2014 0 0 0 1 0 0 0 1
## 3 03-01-2014 0 0 0 0 1 0 0 1
## 4 04-01-2014 0 0 0 0 0 1 0 1
## 5 05-01-2014 0 0 0 0 0 0 1 1
## 6 06-01-2014 1 0 0 0 0 0 0 1
## Febrero Marzo Abril Mayo Junio Julio Agosto Septiembre Octubre Noviembre
## 1 0 0 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0 0 0 0
## 6 0 0 0 0 0 0 0 0 0 0
## Diciembre Feriado Semana.Santa Prima Salondelautomovil Mujer Padre Madre
## 1 0 1 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0 0
## 6 0 1 0 0 0 0 0 0
## AmoryAmistad
## 1 0
## 2 0
## 3 0
## 4 0
## 5 0
## 6 0
Se transforma la variable FEcha a formato Fecha pues se cargo como factor y se unifica el nombre a FECHA para que coincida con l clave de la tabla Total_Dataset_Freq
Dias_Especiales <- Dias_Especiales[1:1826,]
Dias_Especiales$FECHA <- as.Date(Dias_Especiales$Fecha, format="%d-%m-%Y")
Dias_Especiales$Fecha <- NULL
Estos dias especiales se incorporan al dataframe Total_Dataset_Freq
Total_Dataset_Freq <- sqldf("SELECT *
FROM Total_Dataset_Freq
LEFT JOIN Dias_Especiales USING(FECHA)")
head(Total_Dataset_Freq)
## FECHA CLASE FREQ DIA_NOMBRE MES DIA ANO SEMANA Lunes
## 1 2014-01-01 Atropello 13 MIERCOLES 1 1 2014 01 0
## 2 2014-01-01 Caida_Ocupante 7 MIERCOLES 1 1 2014 01 0
## 3 2014-01-01 Choque 35 MIERCOLES 1 1 2014 01 0
## 4 2014-01-01 Otro 18 MIERCOLES 1 1 2014 01 0
## 5 2014-01-01 Volcamiento 1 MIERCOLES 1 1 2014 01 0
## 6 2014-01-02 Atropello 12 JUEVES 1 2 2014 01 0
## martes miercoles jueves viernes sabado domingo Enero Febrero Marzo Abril
## 1 0 1 0 0 0 0 1 0 0 0
## 2 0 1 0 0 0 0 1 0 0 0
## 3 0 1 0 0 0 0 1 0 0 0
## 4 0 1 0 0 0 0 1 0 0 0
## 5 0 1 0 0 0 0 1 0 0 0
## 6 0 0 1 0 0 0 1 0 0 0
## Mayo Junio Julio Agosto Septiembre Octubre Noviembre Diciembre Feriado
## 1 0 0 0 0 0 0 0 0 1
## 2 0 0 0 0 0 0 0 0 1
## 3 0 0 0 0 0 0 0 0 1
## 4 0 0 0 0 0 0 0 0 1
## 5 0 0 0 0 0 0 0 0 1
## 6 0 0 0 0 0 0 0 0 0
## Semana.Santa Prima Salondelautomovil Mujer Padre Madre AmoryAmistad
## 1 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0
## 6 0 0 0 0 0 0 0
library(plotly)
## Loading required package: ggplot2
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
plot_ly(data=Total_Dataset_Freq,
x = ~FECHA,
y = ~FREQ,
type = "scatter", mode = "lines",
split = ~ANO,
ine=list(width=1))%>%
layout(title='Accidentes_Medellin',
xaxis=list(title="Dia"),
yaxis=list(title="Unidades"))
## Warning: 'scatter' objects don't have these attributes: 'ine'
## Valid attributes include:
## 'type', 'visible', 'showlegend', 'legendgroup', 'opacity', 'name', 'uid', 'ids', 'customdata', 'selectedpoints', 'hoverinfo', 'hoverlabel', 'stream', 'transforms', 'uirevision', 'x', 'x0', 'dx', 'y', 'y0', 'dy', 'stackgroup', 'orientation', 'groupnorm', 'stackgaps', 'text', 'hovertext', 'mode', 'hoveron', 'hovertemplate', 'line', 'connectgaps', 'cliponaxis', 'fill', 'fillcolor', 'marker', 'selected', 'unselected', 'textposition', 'textfont', 'r', 't', 'error_x', 'error_y', 'xcalendar', 'ycalendar', 'xaxis', 'yaxis', 'idssrc', 'customdatasrc', 'hoverinfosrc', 'xsrc', 'ysrc', 'textsrc', 'hovertextsrc', 'hovertemplatesrc', 'textpositionsrc', 'rsrc', 'tsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'
## Warning: 'scatter' objects don't have these attributes: 'ine'
## Valid attributes include:
## 'type', 'visible', 'showlegend', 'legendgroup', 'opacity', 'name', 'uid', 'ids', 'customdata', 'selectedpoints', 'hoverinfo', 'hoverlabel', 'stream', 'transforms', 'uirevision', 'x', 'x0', 'dx', 'y', 'y0', 'dy', 'stackgroup', 'orientation', 'groupnorm', 'stackgaps', 'text', 'hovertext', 'mode', 'hoveron', 'hovertemplate', 'line', 'connectgaps', 'cliponaxis', 'fill', 'fillcolor', 'marker', 'selected', 'unselected', 'textposition', 'textfont', 'r', 't', 'error_x', 'error_y', 'xcalendar', 'ycalendar', 'xaxis', 'yaxis', 'idssrc', 'customdatasrc', 'hoverinfosrc', 'xsrc', 'ysrc', 'textsrc', 'hovertextsrc', 'hovertemplatesrc', 'textpositionsrc', 'rsrc', 'tsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'
## Warning: 'scatter' objects don't have these attributes: 'ine'
## Valid attributes include:
## 'type', 'visible', 'showlegend', 'legendgroup', 'opacity', 'name', 'uid', 'ids', 'customdata', 'selectedpoints', 'hoverinfo', 'hoverlabel', 'stream', 'transforms', 'uirevision', 'x', 'x0', 'dx', 'y', 'y0', 'dy', 'stackgroup', 'orientation', 'groupnorm', 'stackgaps', 'text', 'hovertext', 'mode', 'hoveron', 'hovertemplate', 'line', 'connectgaps', 'cliponaxis', 'fill', 'fillcolor', 'marker', 'selected', 'unselected', 'textposition', 'textfont', 'r', 't', 'error_x', 'error_y', 'xcalendar', 'ycalendar', 'xaxis', 'yaxis', 'idssrc', 'customdatasrc', 'hoverinfosrc', 'xsrc', 'ysrc', 'textsrc', 'hovertextsrc', 'hovertemplatesrc', 'textpositionsrc', 'rsrc', 'tsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'
## Warning: 'scatter' objects don't have these attributes: 'ine'
## Valid attributes include:
## 'type', 'visible', 'showlegend', 'legendgroup', 'opacity', 'name', 'uid', 'ids', 'customdata', 'selectedpoints', 'hoverinfo', 'hoverlabel', 'stream', 'transforms', 'uirevision', 'x', 'x0', 'dx', 'y', 'y0', 'dy', 'stackgroup', 'orientation', 'groupnorm', 'stackgaps', 'text', 'hovertext', 'mode', 'hoveron', 'hovertemplate', 'line', 'connectgaps', 'cliponaxis', 'fill', 'fillcolor', 'marker', 'selected', 'unselected', 'textposition', 'textfont', 'r', 't', 'error_x', 'error_y', 'xcalendar', 'ycalendar', 'xaxis', 'yaxis', 'idssrc', 'customdatasrc', 'hoverinfosrc', 'xsrc', 'ysrc', 'textsrc', 'hovertextsrc', 'hovertemplatesrc', 'textpositionsrc', 'rsrc', 'tsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'
## Warning: 'scatter' objects don't have these attributes: 'ine'
## Valid attributes include:
## 'type', 'visible', 'showlegend', 'legendgroup', 'opacity', 'name', 'uid', 'ids', 'customdata', 'selectedpoints', 'hoverinfo', 'hoverlabel', 'stream', 'transforms', 'uirevision', 'x', 'x0', 'dx', 'y', 'y0', 'dy', 'stackgroup', 'orientation', 'groupnorm', 'stackgaps', 'text', 'hovertext', 'mode', 'hoveron', 'hovertemplate', 'line', 'connectgaps', 'cliponaxis', 'fill', 'fillcolor', 'marker', 'selected', 'unselected', 'textposition', 'textfont', 'r', 't', 'error_x', 'error_y', 'xcalendar', 'ycalendar', 'xaxis', 'yaxis', 'idssrc', 'customdatasrc', 'hoverinfosrc', 'xsrc', 'ysrc', 'textsrc', 'hovertextsrc', 'hovertemplatesrc', 'textpositionsrc', 'rsrc', 'tsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'
plot_ly(data=Total_Dataset_Freq,
x = ~ANO,
y = ~FREQ,
type = "box")%>%
layout(title='Accidentes_Medellin',
xaxis=list(title="ano"),
yaxis=list(title="Unidades"))
plot_ly(data=Total_Dataset_Freq,
x = ~MES,
y = ~FREQ,
type = "box")%>%
layout(title='Accidentes_Medellin',
xaxis=list(title="Mes"),
yaxis=list(title="Unidades"))
plot_ly(data=Total_Dataset_Freq,
x = ~DIA_NOMBRE,
y = ~FREQ,
type = "box")%>%
layout(title='Accidentes_Medellin',
xaxis=list(title="Dia_Nombre"),
yaxis=list(title="Unidades"))
Se observa que excepto el domingo que es menor, los demasla accidentalidad promedio es muy similar, pero se diferencia en la cola derecha de la distribucion
plot_ly(data=Total_Dataset_Freq,
x = ~SEMANA,
y = ~FREQ,
type = "box")%>%
layout(title='Accidentes_Medellin',
xaxis=list(title="SEMANA"),
yaxis=list(title="Unidades"))
attach(Total_Dataset_Freq)
aggregate(FREQ~ANO*MES, data=Total_Dataset_Freq,FUN=mean)%>%
plot_ly(x = ~MES,
y = ~FREQ,
type = "scatter" ,mode = "lines",
split = ~ANO,
line=list(width=1))%>%
layout(title='Promedio diario mensual de ACCIDENTES en Medellin',
xaxis=list(title="Mes"),
yaxis=list(title="No. Accidentes"))
aggregate(FREQ~ANO*DIA_NOMBRE, data=Total_Dataset_Freq,FUN=mean)%>%
plot_ly(x = ~DIA_NOMBRE,
y = ~FREQ,
type = "scatter" ,mode = "lines",
split = ~ANO,
line=list(width=1))%>%
layout(title='Promedio diario DIA DE LA SEMANA de Accidentes de Transito en Medellin',
xaxis=list(title="Dia Semana"),
yaxis=list(title="No. Accidentes"))
aggregate(FREQ~ANO*CLASE, data=Total_Dataset_Freq,FUN=mean)%>%
plot_ly(x = ~CLASE,
y = ~FREQ,
type = "scatter" ,mode = "lines",
split = ~ANO,
line=list(width=1))%>%
layout(title='Promedio diario CLASE de Accidentes de Transito en Medellin',
xaxis=list(title="Clase"),
yaxis=list(title="No. Accidentes"))
LAs predicciones a realizar seran para cada uno de las 5 clases de accidentes, y para los periodos de tiempo mensual, semanal y diario, por lo que se generaran 15 modelos, 5 clases de accidente por 3 tipos de periodo de prediccion.
Se realiza entonces la particion de los datos por frecuencia: M: Mensual, S: Semanal, D: Diario
primero se realiza un reshape del dataframe para consolidar los casos por dia y separarlos factores CLASE en columnas
library(reshape)
##
## Attaching package: 'reshape'
## The following object is masked from 'package:plotly':
##
## rename
Total_Dataset_Freq <- cast(Total_Dataset_Freq[,c(1,2,3)],FECHA~CLASE)
## Using FREQ as value column. Use the value argument to cast to override this choice
Total_Dataset_Freq <- sqldf("SELECT *
FROM Total_Dataset_Freq
LEFT JOIN Dias_Especiales USING(FECHA)")
se agrega la variable año al datafrate
Total_Dataset_Freq$ANO <- as.factor(format(Total_Dataset_Freq$FECHA,'%Y'))
Se agrega la variable semana al dataframe
Total_Dataset_Freq$SEMANA <-as.factor(format(Total_Dataset_Freq$FECHA,'%V'))
SE agrega la variable dia al dataframe
Total_Dataset_Freq$DIA <-as.factor(format(Total_Dataset_Freq$FECHA,'%d'))
Se agrega el dia de la semana
Total_Dataset_Freq$DIA_SEMANA <-as.factor(weekdays(Total_Dataset_Freq$FECHA))
Se agrega el mes
Total_Dataset_Freq$MES <-as.factor(format(Total_Dataset_Freq$FECHA,'%m'))
head(Total_Dataset_Freq)
## FECHA Atropello Caida_Ocupante Choque Otro Volcamiento Lunes martes
## 1 2014-01-01 13 7 35 18 1 0 0
## 2 2014-01-02 12 7 43 9 1 0 0
## 3 2014-01-03 7 5 67 13 1 0 0
## 4 2014-01-04 11 7 40 9 1 0 0
## 5 2014-01-05 6 5 43 10 3 0 0
## 6 2014-01-06 4 5 23 9 2 1 0
## miercoles jueves viernes sabado domingo Enero Febrero Marzo Abril Mayo
## 1 1 0 0 0 0 1 0 0 0 0
## 2 0 1 0 0 0 1 0 0 0 0
## 3 0 0 1 0 0 1 0 0 0 0
## 4 0 0 0 1 0 1 0 0 0 0
## 5 0 0 0 0 1 1 0 0 0 0
## 6 0 0 0 0 0 1 0 0 0 0
## Junio Julio Agosto Septiembre Octubre Noviembre Diciembre Feriado
## 1 0 0 0 0 0 0 0 1
## 2 0 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0 0
## 6 0 0 0 0 0 0 0 1
## Semana.Santa Prima Salondelautomovil Mujer Padre Madre AmoryAmistad ANO
## 1 0 0 0 0 0 0 0 2014
## 2 0 0 0 0 0 0 0 2014
## 3 0 0 0 0 0 0 0 2014
## 4 0 0 0 0 0 0 0 2014
## 5 0 0 0 0 0 0 0 2014
## 6 0 0 0 0 0 0 0 2014
## SEMANA DIA DIA_SEMANA MES
## 1 01 01 miércoles 01
## 2 01 02 jueves 01
## 3 01 03 viernes 01
## 4 01 04 sábado 01
## 5 01 05 domingo 01
## 6 02 06 lunes 01
Se agrega la columna Total_Accidentes
Total_Dataset_Freq$Total_Accidentes <- Total_Dataset_Freq$Atropello + Total_Dataset_Freq$Caida_Ocupante + Total_Dataset_Freq$Choque + Total_Dataset_Freq$Otro + Total_Dataset_Freq$Volcamiento
tail(Total_Dataset_Freq)
## FECHA Atropello Caida_Ocupante Choque Otro Volcamiento Lunes
## 1821 2018-12-26 11 7 84 6 4 0
## 1822 2018-12-27 13 3 77 9 2 0
## 1823 2018-12-28 6 6 84 7 1 0
## 1824 2018-12-29 15 4 59 7 3 0
## 1825 2018-12-30 5 7 33 10 2 0
## 1826 2018-12-31 8 6 50 10 2 0
## martes miercoles jueves viernes sabado domingo Enero Febrero Marzo
## 1821 0 0 0 0 0 0 0 0 0
## 1822 0 0 0 0 0 0 0 0 0
## 1823 0 0 0 0 0 0 0 0 0
## 1824 0 0 0 0 0 0 0 0 0
## 1825 0 0 0 0 0 0 0 0 0
## 1826 0 0 0 0 0 0 0 0 0
## Abril Mayo Junio Julio Agosto Septiembre Octubre Noviembre Diciembre
## 1821 0 0 0 0 0 0 0 0 0
## 1822 0 0 0 0 0 0 0 0 0
## 1823 0 0 0 0 0 0 0 0 0
## 1824 0 0 0 0 0 0 0 0 0
## 1825 0 0 0 0 0 0 0 0 0
## 1826 0 0 0 0 0 0 0 0 0
## Feriado Semana.Santa Prima Salondelautomovil Mujer Padre Madre
## 1821 0 0 0 0 0 0 0
## 1822 0 0 0 0 0 0 0
## 1823 0 0 0 0 0 0 0
## 1824 0 0 0 0 0 0 0
## 1825 0 0 0 0 0 0 0
## 1826 0 0 0 0 0 0 0
## AmoryAmistad ANO SEMANA DIA DIA_SEMANA MES Total_Accidentes
## 1821 0 2018 52 26 miércoles 12 112
## 1822 0 2018 52 27 jueves 12 104
## 1823 0 2018 52 28 viernes 12 104
## 1824 0 2018 52 29 sábado 12 88
## 1825 0 2018 52 30 domingo 12 57
## 1826 0 2018 01 31 lunes 12 76
Total_Dataset_Freq[is.na(Total_Dataset_Freq)] <- 0
Train_D_Dataset <- subset(Total_Dataset_Freq, ANO!="2018")
summary(Train_D_Dataset$ANO)
## 2014 2015 2016 2017 2018
## 365 365 366 365 0
Se ajustan otra vez los niveles del factor ANO
Train_D_Dataset$ANO <- factor(Train_D_Dataset$ANO)
summary(Train_D_Dataset$ANO)
## 2014 2015 2016 2017
## 365 365 366 365
library(sqldf)
Test_D_Dataset <- sqldf("SELECT *
FROM Total_Dataset_Freq
WHERE ANO == 2018")
summary(Test_D_Dataset$ANO)
## 2014 2015 2016 2017 2018
## 0 0 0 0 365
Se ajustan otra vez los niveles del factor ANO
Test_D_Dataset$ANO <- factor(Test_D_Dataset$ANO)
summary(Test_D_Dataset$ANO)
## 2018
## 365
set.seed(1) # fija la semilla del generador de números para que sea reproducible
head(Train_D_Dataset)
## FECHA Atropello Caida_Ocupante Choque Otro Volcamiento Lunes martes
## 1 2014-01-01 13 7 35 18 1 0 0
## 2 2014-01-02 12 7 43 9 1 0 0
## 3 2014-01-03 7 5 67 13 1 0 0
## 4 2014-01-04 11 7 40 9 1 0 0
## 5 2014-01-05 6 5 43 10 3 0 0
## 6 2014-01-06 4 5 23 9 2 1 0
## miercoles jueves viernes sabado domingo Enero Febrero Marzo Abril Mayo
## 1 1 0 0 0 0 1 0 0 0 0
## 2 0 1 0 0 0 1 0 0 0 0
## 3 0 0 1 0 0 1 0 0 0 0
## 4 0 0 0 1 0 1 0 0 0 0
## 5 0 0 0 0 1 1 0 0 0 0
## 6 0 0 0 0 0 1 0 0 0 0
## Junio Julio Agosto Septiembre Octubre Noviembre Diciembre Feriado
## 1 0 0 0 0 0 0 0 1
## 2 0 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0 0
## 6 0 0 0 0 0 0 0 1
## Semana.Santa Prima Salondelautomovil Mujer Padre Madre AmoryAmistad ANO
## 1 0 0 0 0 0 0 0 2014
## 2 0 0 0 0 0 0 0 2014
## 3 0 0 0 0 0 0 0 2014
## 4 0 0 0 0 0 0 0 2014
## 5 0 0 0 0 0 0 0 2014
## 6 0 0 0 0 0 0 0 2014
## SEMANA DIA DIA_SEMANA MES Total_Accidentes
## 1 01 01 miércoles 01 74
## 2 01 02 jueves 01 72
## 3 01 03 viernes 01 93
## 4 01 04 sábado 01 68
## 5 01 05 domingo 01 67
## 6 02 06 lunes 01 43
#DIA_NOMBRE+DIA+SEMANA+MES+ANO+AmoryAmistad+Madre+Padre+Mujer+Prima+Semana.Santa+Feriado
library(caret)
## Loading required package: lattice
trcntrl = trainControl(method="cv", number=10)
caret_knn_fit = caret::train(Total_Accidentes~DIA+SEMANA+MES+DIA_SEMANA, data=Train_D_Dataset,
method = "knn", trControl = trcntrl,
preProcess=c("center", "scale"),
tuneLength = 10)
summary(caret_knn_fit)
## Length Class Mode
## learn 2 -none- list
## k 1 -none- numeric
## theDots 0 -none- list
## xNames 99 -none- character
## problemType 1 -none- character
## tuneValue 1 data.frame list
## obsLevels 1 -none- logical
## param 0 -none- list
caret_knn_fit
## k-Nearest Neighbors
##
## 1461 samples
## 4 predictor
##
## Pre-processing: centered (99), scaled (99)
## Resampling: Cross-Validated (10 fold)
## Summary of sample sizes: 1314, 1316, 1315, 1314, 1314, 1317, ...
## Resampling results across tuning parameters:
##
## k RMSE Rsquared MAE
## 5 37.20650 0.03546325 27.39987
## 7 38.15235 0.01924245 29.66585
## 9 37.90840 0.01621626 29.76262
## 11 37.22423 0.01783186 28.68736
## 13 36.80734 0.01715253 27.93613
## 15 36.50205 0.01757764 27.33275
## 17 36.17714 0.02072280 26.83749
## 19 35.99647 0.02419315 26.56667
## 21 35.91551 0.02313338 26.38848
## 23 35.89796 0.02223166 26.36860
##
## RMSE was used to select the optimal model using the smallest value.
## The final value used for the model was k = 23.
Calculo MSE y RMSE para los datos de entrenamiento
y_tr_pred_knn<-predict(caret_knn_fit,Train_D_Dataset[,c("DIA","SEMANA","MES","DIA_SEMANA")])
mse_tr_knn<-mean((Train_D_Dataset$Total_Accidentes-y_tr_pred_knn)^2) # calcula el mse de entrenamiento
RMSE_tr_knn = sqrt(mse_tr_knn)
mse_tr_knn
## [1] 1179.59
RMSE_tr_knn
## [1] 34.34516
Calculo MSE y RMSE para los datos de prueba (2018)
y_test_pred_knn<-predict(caret_knn_fit,Test_D_Dataset[,c("DIA","SEMANA","MES","DIA_SEMANA")])
mse_test_knn<-mean((Test_D_Dataset$Total_Accidentes-y_test_pred_knn)^2) # calcula el mse de entrenamiento
RMSE_test_knn = sqrt(mse_test_knn)
mse_test_knn
## [1] 1489.88
RMSE_test_knn
## [1] 38.59896
plot_ly (data=Test_D_Dataset,
x = ~FECHA,
y = ~Total_Accidentes,
type = "scatter" ,mode = "lines",
name='Real',
line=list(width=1,color='rgb(205, 12, 24)'))%>%
add_trace(y= ~y_test_pred_knn,
name='Modelo knn',
line=list(width=1,color='rgb(22, 96, 167)'))%>%
layout(title='Total Accidentes',
xaxis=list(title="Fecha"),
yaxis=list(title="Accidentes"),
legend = list(x = 0.75, y = 0.9))
head(Train_D_Dataset)
## FECHA Atropello Caida_Ocupante Choque Otro Volcamiento Lunes martes
## 1 2014-01-01 13 7 35 18 1 0 0
## 2 2014-01-02 12 7 43 9 1 0 0
## 3 2014-01-03 7 5 67 13 1 0 0
## 4 2014-01-04 11 7 40 9 1 0 0
## 5 2014-01-05 6 5 43 10 3 0 0
## 6 2014-01-06 4 5 23 9 2 1 0
## miercoles jueves viernes sabado domingo Enero Febrero Marzo Abril Mayo
## 1 1 0 0 0 0 1 0 0 0 0
## 2 0 1 0 0 0 1 0 0 0 0
## 3 0 0 1 0 0 1 0 0 0 0
## 4 0 0 0 1 0 1 0 0 0 0
## 5 0 0 0 0 1 1 0 0 0 0
## 6 0 0 0 0 0 1 0 0 0 0
## Junio Julio Agosto Septiembre Octubre Noviembre Diciembre Feriado
## 1 0 0 0 0 0 0 0 1
## 2 0 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0 0
## 6 0 0 0 0 0 0 0 1
## Semana.Santa Prima Salondelautomovil Mujer Padre Madre AmoryAmistad ANO
## 1 0 0 0 0 0 0 0 2014
## 2 0 0 0 0 0 0 0 2014
## 3 0 0 0 0 0 0 0 2014
## 4 0 0 0 0 0 0 0 2014
## 5 0 0 0 0 0 0 0 2014
## 6 0 0 0 0 0 0 0 2014
## SEMANA DIA DIA_SEMANA MES Total_Accidentes
## 1 01 01 miércoles 01 74
## 2 01 02 jueves 01 72
## 3 01 03 viernes 01 93
## 4 01 04 sábado 01 68
## 5 01 05 domingo 01 67
## 6 02 06 lunes 01 43
trcntrl = trainControl(method="cv", number=10)
caret_lm_fit = caret::train(Total_Accidentes~SEMANA+DIA_SEMANA+Semana.Santa+Prima+Feriado, data=Train_D_Dataset,
method = "lm", trControl = trcntrl,
preProcess=c("center", "scale"),
tuneLength = 10)
summary(caret_lm_fit)
##
## Call:
## lm(formula = .outcome ~ ., data = dat)
##
## Residuals:
## Min 1Q Median 3Q Max
## -136.358 -6.938 3.814 14.381 78.353
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 110.33881 0.77012 143.276 < 2e-16 ***
## SEMANA02 0.05773 1.10368 0.052 0.958294
## SEMANA03 1.99972 1.10389 1.812 0.070276 .
## SEMANA04 2.81887 1.10449 2.552 0.010810 *
## SEMANA05 3.71525 1.10449 3.364 0.000790 ***
## SEMANA06 3.24991 1.10449 2.942 0.003310 **
## SEMANA07 5.06227 1.10449 4.583 4.98e-06 ***
## SEMANA08 3.90628 1.10449 3.537 0.000418 ***
## SEMANA09 4.90553 1.10449 4.441 9.64e-06 ***
## SEMANA10 5.30719 1.10449 4.805 1.71e-06 ***
## SEMANA11 4.55926 1.10589 4.123 3.96e-05 ***
## SEMANA12 4.67155 1.12114 4.167 3.28e-05 ***
## SEMANA13 4.68924 1.10507 4.243 2.35e-05 ***
## SEMANA14 4.62146 1.13335 4.078 4.80e-05 ***
## SEMANA15 3.91121 1.13335 3.451 0.000575 ***
## SEMANA16 3.97337 1.12217 3.541 0.000412 ***
## SEMANA17 5.40401 1.10389 4.895 1.09e-06 ***
## SEMANA18 5.37235 1.10368 4.868 1.26e-06 ***
## SEMANA19 4.15985 1.10389 3.768 0.000171 ***
## SEMANA20 5.45903 1.10449 4.943 8.64e-07 ***
## SEMANA21 4.32150 1.10389 3.915 9.48e-05 ***
## SEMANA22 3.64972 1.11698 3.267 0.001111 **
## SEMANA23 4.66444 1.31320 3.552 0.000395 ***
## SEMANA24 5.09173 1.31329 3.877 0.000111 ***
## SEMANA25 4.77710 1.31320 3.638 0.000285 ***
## SEMANA26 3.25107 1.23993 2.622 0.008837 **
## SEMANA27 4.16391 1.10012 3.785 0.000160 ***
## SEMANA28 3.89649 1.10449 3.528 0.000432 ***
## SEMANA29 5.46052 1.10368 4.948 8.43e-07 ***
## SEMANA30 4.89459 1.10389 4.434 9.98e-06 ***
## SEMANA31 6.33958 1.10389 5.743 1.14e-08 ***
## SEMANA32 5.31847 1.10368 4.819 1.60e-06 ***
## SEMANA33 5.60974 1.10389 5.082 4.24e-07 ***
## SEMANA34 3.83429 1.10368 3.474 0.000528 ***
## SEMANA35 5.16024 1.10449 4.672 3.27e-06 ***
## SEMANA36 5.08187 1.10449 4.601 4.58e-06 ***
## SEMANA37 5.44434 1.10449 4.929 9.24e-07 ***
## SEMANA38 5.36107 1.10449 4.854 1.35e-06 ***
## SEMANA39 4.83695 1.10449 4.379 1.28e-05 ***
## SEMANA40 4.64592 1.10449 4.206 2.76e-05 ***
## SEMANA41 2.90214 1.10449 2.628 0.008693 **
## SEMANA42 2.89268 1.10406 2.620 0.008887 **
## SEMANA43 4.30304 1.10449 3.896 0.000102 ***
## SEMANA44 4.96431 1.10449 4.495 7.54e-06 ***
## SEMANA45 3.64212 1.10406 3.299 0.000995 ***
## SEMANA46 5.08939 1.10362 4.612 4.36e-06 ***
## SEMANA47 4.30566 1.10362 3.901 0.000100 ***
## SEMANA48 3.42900 1.10582 3.101 0.001968 **
## SEMANA49 4.13783 1.29758 3.189 0.001460 **
## SEMANA50 4.32156 1.31320 3.291 0.001024 **
## SEMANA51 6.37997 1.31329 4.858 1.32e-06 ***
## SEMANA52 3.62124 1.29821 2.789 0.005352 **
## SEMANA53 -0.28446 0.88588 -0.321 0.748175
## DIA_SEMANAjueves 15.08847 1.00950 14.946 < 2e-16 ***
## DIA_SEMANAlunes 16.24040 1.03103 15.752 < 2e-16 ***
## DIA_SEMANAmartes 15.92445 1.01068 15.756 < 2e-16 ***
## DIA_SEMANAmiércoles 16.25711 1.01105 16.079 < 2e-16 ***
## DIA_SEMANAsábado 14.14228 1.01205 13.974 < 2e-16 ***
## DIA_SEMANAviernes 17.05877 1.00942 16.900 < 2e-16 ***
## Semana.Santa -1.20507 0.93299 -1.292 0.196701
## Prima -1.68227 2.20795 -0.762 0.446239
## Feriado -9.67567 0.87362 -11.075 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 29.44 on 1399 degrees of freedom
## Multiple R-squared: 0.3546, Adjusted R-squared: 0.3264
## F-statistic: 12.6 on 61 and 1399 DF, p-value: < 2.2e-16
caret_lm_fit
## Linear Regression
##
## 1461 samples
## 5 predictor
##
## Pre-processing: centered (61), scaled (61)
## Resampling: Cross-Validated (10 fold)
## Summary of sample sizes: 1314, 1315, 1315, 1316, 1314, 1315, ...
## Resampling results:
##
## RMSE Rsquared MAE
## 29.87212 0.3131865 18.38079
##
## Tuning parameter 'intercept' was held constant at a value of TRUE
Calculo MSE y RMSE para los datos de entrenamiento
y_tr_pred_lm<-predict(caret_lm_fit,Train_D_Dataset[,c("SEMANA","DIA_SEMANA","Semana.Santa","Prima","Feriado")])
mse_tr_lm<-mean((Train_D_Dataset$Total_Accidentes-y_tr_pred_lm)^2) # calcula el mse de entrenamiento
RMSE_tr_lm = sqrt(mse_tr_lm)
mse_tr_lm
## [1] 829.7158
RMSE_tr_lm
## [1] 28.80479
y_test_pred_lm<-predict(caret_lm_fit,Test_D_Dataset[,c("SEMANA","DIA_SEMANA","Semana.Santa","Prima","Feriado")])
mse_test_lm<-mean((Test_D_Dataset$Total_Accidentes-y_test_pred_lm)^2) # calcula el mse de entrenamiento
RMSE_test_lm = sqrt(mse_test_lm)
mse_test_lm
## [1] 1170.291
RMSE_test_lm
## [1] 34.20952
plot_ly (data=Test_D_Dataset,
x = ~FECHA,
y = ~Total_Accidentes,
type = "scatter" ,mode = "lines",
name='Real',
line=list(width=1,color='rgb(205, 12, 24)'))%>%
add_trace(y= ~y_test_pred_lm,
name='Modelo lm',
line=list(width=1,color='rgb(22, 96, 167)'))%>%
layout(title='Total Accidentes',
xaxis=list(title="Fecha"),
yaxis=list(title="Accidentes"),
legend = list(x = 0.75, y = 0.9))
trcntrl = trainControl(method="cv", number=10)
caret_tree_fit = caret::train(Total_Accidentes~SEMANA+DIA_SEMANA+Semana.Santa+Prima+Feriado, data=Train_D_Dataset,
method = "rpart", trControl = trcntrl,
parms = list(split = "gini"),
preProcess=c("center", "scale"),
tuneLength = 10)
## Warning in nominalTrainWorkflow(x = x, y = y, wts = weights, info =
## trainInfo, : There were missing values in resampled performance measures.
caret_tree_fit
## CART
##
## 1461 samples
## 5 predictor
##
## Pre-processing: centered (61), scaled (61)
## Resampling: Cross-Validated (10 fold)
## Summary of sample sizes: 1314, 1315, 1315, 1315, 1317, 1316, ...
## Resampling results across tuning parameters:
##
## cp RMSE Rsquared MAE
## 0.0000984576 29.96655 0.30902646 18.53967
## 0.0001879013 29.95863 0.30940917 18.52437
## 0.0004261127 29.94556 0.30987363 18.50426
## 0.0004661169 29.95070 0.30958157 18.51365
## 0.0010645005 30.00234 0.30761761 18.57429
## 0.0011818415 30.00849 0.30736715 18.59426
## 0.0014555821 29.97843 0.30885589 18.57162
## 0.0017171339 29.96178 0.30951866 18.55885
## 0.0358877731 32.93349 0.16066605 22.15187
## 0.0864731969 35.14401 0.05752186 25.28711
##
## RMSE was used to select the optimal model using the smallest value.
## The final value used for the model was cp = 0.0004261127.
y_tr_pred_tree<-predict(caret_tree_fit,Train_D_Dataset[,c("SEMANA","DIA_SEMANA","Semana.Santa","Prima","Feriado")])
mse_tr_tree<-mean((Train_D_Dataset$Total_Accidentes-y_tr_pred_tree)^2) # calcula el mse de entrenamiento
RMSE_tr_tree = sqrt(mse_tr_tree)
mse_tr_tree
## [1] 889.9898
RMSE_tr_tree
## [1] 29.8327
y_test_pred_tree<-predict(caret_tree_fit,Test_D_Dataset[,c("SEMANA","DIA_SEMANA","Semana.Santa","Prima","Feriado")])
mse_test_tree<-mean((Test_D_Dataset$Total_Accidentes-y_test_pred_tree)^2) # calcula el mse de entrenamiento
RMSE_test_tree = sqrt(mse_test_tree)
mse_test_tree
## [1] 1204.817
RMSE_test_tree
## [1] 34.71048
plot_ly (data=Test_D_Dataset,
x = ~FECHA,
y = ~Total_Accidentes,
type = "scatter" ,mode = "lines",
name='Real',
line=list(width=1,color='rgb(205, 12, 24)'))%>%
add_trace(y= ~y_test_pred_tree,
name='Modelo lm',
line=list(width=1,color='rgb(22, 96, 167)'))%>%
layout(title='Total Accidentes',
xaxis=list(title="Fecha"),
yaxis=list(title="Accidentes"),
legend = list(x = 0.75, y = 0.9))
trcntrl = trainControl(method="cv", number=10)
caret_rf_fit = caret::train(Total_Accidentes~SEMANA+DIA_SEMANA+Semana.Santa+Prima+Feriado, data=Train_D_Dataset,
method = "rf", trControl = trcntrl,
prox=TRUE,allowParallel=TRUE)
summary(caret_rf_fit)
## Length Class Mode
## call 6 -none- call
## type 1 -none- character
## predicted 1461 -none- numeric
## mse 500 -none- numeric
## rsq 500 -none- numeric
## oob.times 1461 -none- numeric
## importance 61 -none- numeric
## importanceSD 0 -none- NULL
## localImportance 0 -none- NULL
## proximity 2134521 -none- numeric
## ntree 1 -none- numeric
## mtry 1 -none- numeric
## forest 11 -none- list
## coefs 0 -none- NULL
## y 1461 -none- numeric
## test 0 -none- NULL
## inbag 0 -none- NULL
## xNames 61 -none- character
## problemType 1 -none- character
## tuneValue 1 data.frame list
## obsLevels 1 -none- logical
## param 2 -none- list
caret_rf_fit
## Random Forest
##
## 1461 samples
## 5 predictor
##
## No pre-processing
## Resampling: Cross-Validated (10 fold)
## Summary of sample sizes: 1314, 1314, 1314, 1316, 1315, 1314, ...
## Resampling results across tuning parameters:
##
## mtry RMSE Rsquared MAE
## 2 33.63886 0.1746341 23.86391
## 31 33.20639 0.2149849 21.64351
## 61 33.37352 0.2131652 21.76263
##
## RMSE was used to select the optimal model using the smallest value.
## The final value used for the model was mtry = 31.
y_tr_pred_rf<-predict(caret_rf_fit,Train_D_Dataset[,c("SEMANA","DIA_SEMANA","Semana.Santa","Prima","Feriado")])
mse_tr_rf<-mean((Train_D_Dataset$Total_Accidentes-y_tr_pred_rf)^2) # calcula el mse de entrenamiento
RMSE_tr_rf = sqrt(mse_tr_rf)
mse_tr_rf
## [1] 605.4123
RMSE_tr_rf
## [1] 24.60513
y_test_pred_rf<-predict(caret_rf_fit,Test_D_Dataset[,c("SEMANA","DIA_SEMANA","Semana.Santa","Prima","Feriado")])
mse_test_rf<-mean((Test_D_Dataset$Total_Accidentes-y_test_pred_rf)^2) # calcula el mse de entrenamiento
RMSE_test_rf = sqrt(mse_test_rf)
mse_test_rf
## [1] 1345.366
RMSE_test_rf
## [1] 36.67923
plot_ly (data=Test_D_Dataset,
x = ~FECHA,
y = ~Total_Accidentes,
type = "scatter" ,mode = "lines",
name='Real',
line=list(width=1,color='rgb(205, 12, 24)'))%>%
add_trace(y= ~y_test_pred_rf,
name='Modelo lm',
line=list(width=1,color='rgb(22, 96, 167)'))%>%
layout(title='Total Accidentes',
xaxis=list(title="Fecha"),
yaxis=list(title="Accidentes"),
legend = list(x = 0.75, y = 0.9))